#include <stdio.h>
#include <stdlib.h>
typedef struct goods{
    double w;   //物品重量
    double v;   //物品价值
    double uv;  //单位价值
    int id;     //物品编号
}G;




int compare(const void* a, const void* b) {
    G* ga = (G*)a;
    G* gb = (G*)b;
    return (gb->uv > ga->uv) ? 1 : -1;  // 降序
}


void sort(G g[],int n)
{
   qsort(g, n, sizeof(G), compare);
}


void selve(G g[],int n,double c,double x[])
{
    sort(g,n);
    for(int i=0;i<n;i++)
    {
        x[g[i].id]=0;
    }
    int i=0;
    double C=c;
    for(i=0;i<n;i++)
    {
        if(g[i].w>C)
        {
            break;
        }
        x[g[i].id]=1;
        C=C-g[i].w;
    }
    if(i<n)
    {
        x[g[i].id]=C/g[i].w;
    }
}


int main(void) {
    int n;
    double c;
    scanf("%d%lf",&n,&c);
    double x[n];
    struct goods g[n];
    for(int i=0;i<n;i++)
    {
        scanf("%lf%lf",&g[i].w,&g[i].v);
        g[i].uv=g[i].v/g[i].w;
        g[i].id=i;
    }
    selve(g,n,c,x);
    for(int i=0;i<n;i++)
    {
        printf("%d: %lf\n",g[i].id,x[g[i].id]);
    }
    return 0;
}
